package com.ipartek.pruebas.capitulo8;

import com.ipartek.pruebas.bean.AlumnoP1;
import com.ipartek.pruebas.excepciones.ExcepcionAlumnoP1;

/**
 * Clase para probar el funcionamiento del paso de parametros por referencia y valor
 * @author practicas1
 *
 */

public class PruebaMetodosP1 {
	/**
	 * Metodo para el ejemplo de "paso por valor", el cual muestra por pantalla el parametro
	 * incrementando el valor en 1
	 * @param valor mostrar por pantalla
	 */
	static void incrementarValor (int valor){
		valor++;
		System.out.println(valor);
	}
	/**
	 * Metodo para el ejemplo de "paso por referencia", el cual muestra por pantalla
	 * la edad del objeto AlumnoP1 incrementando su edad en 1
	 * @param alumno instancia de la clase AlumnoP1
	 */
	static void incrementarReferencia(AlumnoP1 alumno){
		try{
		int edad = alumno.getEdad();
		alumno.setEdad(edad+1);
		System.out.println(alumno.getEdad());
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	/**
	 * Metodo para el ejemplo de "paso por referencia", el cual muestra por pantalla
	 * la edad del objeto AlumnoP1 y dos copias del mismo incrementando su edad en 1
	 * @param alumno instancia de la clase AlumnoP1
	 */
	static void incrementarReferencia2(AlumnoP1 alumno){
		AlumnoP1 a = null;
		try {
			a = new AlumnoP1(alumno.getNombre(), alumno.getApellidos(), alumno.getDNI(), alumno.getEmail(), alumno.getEdad(), 0);
		} catch (ExcepcionAlumnoP1 e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		AlumnoP1 a1 = a;
		System.out.println(a.getEdad()+" y "+a1.getEdad());
		incrementarReferencia(a);
		System.out.println("Alumno pasado por parametro: "+a.getEdad());
		System.out.println("Segundo alumno creado: " +a1.getEdad());
		System.out.println("Alumno inicial alumno creado: " +alumno.getEdad());
	}
	/**
	 * Metodo para el ejemplo de "paso por referencia", el cual muestra por pantalla
	 * la edad del objeto AlumnoP1 y un clon suyo incrementando su edad en 1
	 * @param alumno instancia de la clase AlumnoP1
	 */
	static void incremetarReferenciaClone(AlumnoP1 alumno){
		AlumnoP1 a = null;
		try{
		a = (AlumnoP1) alumno.clone();
		incrementarReferencia(a);
		System.out.println(a.toString());
		}catch(Exception e){
			e.printStackTrace();
		}
		
	}
	/**
	 * Metodo mail para probar la clase
	 * 
	 * @param args no vamos a pasar ningun parametro
	 */
	public static void main(String[] args) {
		/*int edad = 17;
		System.out.println("Nos debe mostrar la edad de 17 =" + edad);
		incrementarValor(edad);
		System.out.println("Nos debe mostrar la edad de 17 =" + edad);
		
		*/
		AlumnoP1 a = null;
		try {
			a = new AlumnoP1("Jose", "Fernandez", "80157560F", "jmurillo9999@hotmail.com", 17, 7);
		} catch (ExcepcionAlumnoP1 e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		/*
		System.out.println(a.toString());
		incrementarReferencia(a);
		System.out.println(a.toString());
		
		incrementarReferencia2(a);*/
		System.out.println(a.toString());

		incremetarReferenciaClone(a);

		System.out.println(a.toString());
		
	}
}
